Explorative data analysis using software-defined radios

Relatore
Leonardo Baldin
Supervisore
Fabrizio Granelli

Software-defined radiooooxxjooo

Hardware in grado di digitalizzare qualunque genere di segnale radio con alta precisione

Moduli radio programmabili dall’utente

I dati ottenuti sono elaborati via software

Funzionamento di un ricevitore SDR

Software-defined radio - utilizzi

Misurazione delle interferenze radio su qualunque frequenza

  • Occupazione delle bande in reti wireless

Registrazione e decodifica di segnali analogici e digitali

  • Aircraft Communications Addressing and Reporting System (ACARS) per tracciamento velivoli

Comunicazione con ricevitori ignoti (ad esempio satelliti)

Obiettivi

Semplificare registrazione di dati dallo spettro radio e rendere i risultati facilmente analizzabili

Ridurre le risorse necessarie per analisi radio in larga scala, sia hardware che software

Sperimentare l’utilizzo di tecnologie contemporanee per creare una serie di software che sfruttano SDR

Hardware

Ogni “nodo” é un dispositivo embedded o a bassa potenza (ad esempio Raspberry Pi) dotato di un ricevitore SDR

Un ricevitore moderno come RTL-SDR é facilmente reperibile e con specifiche più che adeguate per misurazioni radio su scala medio-piccola

Un ricevitore RTL-SDR

Un Raspberry Pi

Una vista “a cascata” dei segnali

Analisi dati

I dati vengono registrati in uno dei seguenti formati

  1. Densità spettrale “grezza” su una specifica frequenza
  2. Medie di densità ottenute tramite FFT in un periodo di tempo arbitrario e un intervallo di frequenze, ordinate per frequenza e momento di acquisizione

Trasferimento dati

Anche moduli SDR economici e facilmente reperibili producono una grande quantità di dati

Tramite varie strategie di massimizzazione del traffico di rete, i dati sono trasferiti dai nodi al backend tramite TCP

Il dati sono salvati in RAM, poi su disco, dal servizio backend sotto forma di un key-value store

Software - backend

Il backend deve

  • Controllare remotamente i nodi
  • Ricevere registrazioni radio e salvare i dati su disco
  • Mostrare un’interfaccia di controllo all’utente

Software - nodi

Ogni nodo deve

  • Scambiare messaggi di servizio con il backend
  • Eseguire comandi arbitrari
  • Inviare misurazioni radio al backend su richiesta

Interfaccia utente

Un’interfaccia efficiente e accessibile deve permettere a qualunque utente di navigare tra le funzioni di un sistema complesso

An idiot admires complexity, a genius admires simplicity

Terry A. Davis

Homepage

La homepage permette il controllo remoto della flotta di nodi

Vista dati

Ogni nodo viene monitorato e fornisce registrazioni radio scaricabili

Configurazione

Ogni nodo fornisce un’interfaccia di configurazione del sistema

Sommario

É stato progettato un sistema client-server (“backend”) che

  • sfrutta una tecnologia moderna per messaggistica di servizio (NATS), con messaggi in formato stabile e documentato (JSON)
  • gestisce i dati e ne fornisce l’accesso tramite uno standard del Web (REST)

É stato implementato software di basso livello (“node”) che

  • permette il controllo remoto di una macchina (nodo)
  • si interfaccia con dispositivi SDR per l’acquisizione di dati radio

Sono state ideate e sviluppate interfacce grafiche ad uso degli utenti del servizio, basate su tecnologie Web e su principi di accessibilità

Grazie per l'attenzione

BadgerDB

Un key-value store svilppato da Dgraph che memorizza dati in una struttura simile a una Map, tenendo traccia dei rapporti chiave-valore usando alberi LSM in RAM

Permette scrittura e lettura molto veloci perché non provvede un motore di query relazionale come database basati su SQL

Considerazioni

  • Ottimizzato per SSD moderni e processori multi-core
  • Sviluppato in Go e open source

Go

Linguaggio di programmazione reso open-source da Google nel 2009 e in rapida adozione professionale

Creato appositamente per sviluppo backend su macchine multi-core e interconnesse da reti moderne

Considerazioni

  • Estremamente performante su macchine multi-core
  • Sistema di tipi “severo” per assicurare correttezza
  • Gestione automatica della memoria (“garbage collection”)

NATS

Sistema di messaggistica sviluppato in Go e nato come alternativa a MQTT, basato su uno o più server centrali e un numero arbitrario di client

Considerazioni

  • Garanzie di spedizione messaggi in caso di perdita dati
  • Architettura di rete flessibile
  • Rigenerazione delle connessioni se interrotte